/**
 * @file         bsc_can_adapter.h
 * @brief        CAN服务框架 ———— 适配器
 * @note    
 * @author       Jpz(puzhao.jin@hopechart.com, 靳普诏)
 * @data         2022-8-10
 * @version      1.0
 *
 * @par          修改日志
 * <table>
 * <tr><th>Date        <th>Version               <th>Author          <th>Description
 * <tr><td>2022-8-10   <td>1.0                   <td>Jpz             <td>创建初始版本
 * @copyright    杭州鸿泉物联网技术股份有限公司
 */

#ifndef _BSC_CAN_ADAPTER_H_
#define _BSC_CAN_ADAPTER_H_

#include "ofc/ofc_types.h"
#include "bsc_can_server/bsc_can_device.h"

#ifdef __cplusplus
extern "C" {
#endif


// ~~~~~~~~~~~~~~~~~ 适配器结构体 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/**
 * 获取可用CAN通道数量
 * @return CAN通道数量 
 */
UInt8 TBsCanAdapterChannelCount(void);

/**
 * 获取CAN设备对象指针
 * @param channel： CAN通道号
 * @return  成功, 对象指针；
 *          失败，NULL；
 */
TBsCanDevice *TBsCanAdapterGetDeviceHandle(UInt8 channel);

/**
 * 获取 can通道分配的缓存地址
 * @param channel         通道号
 * @param ret_rx_count    接收缓存帧数
 * @param ret_rx_frame    接收缓存地址
 * @param ret_tx_count    发送缓存帧数
 * @param ret_tx_frame    发送缓存地址
 * @return True  成功；
 *         False 失败
 */
Bool TBsCanAdapterGetDeviceFrameBuff(UInt8 channel, 
                                    UInt32 *ret_rx_count, TBsCanData **ret_rx_frame,
                                    UInt32 *ret_tx_count, TBsCanData **ret_tx_frame);


#ifdef __cplusplus
} // extern "C" {
#endif


#endif // #ifndef _BSC_CAN_ADAPTER_H_

